package com.ssyt.yt1.day3.array;

import java.util.Arrays;

/**
 * 数组的常用操作方法
 * 
 * @author Administrator
 *
 */
public class ArrayMethod extends Object {

	/**
	 * 利用Arrays类完成数组的排序
	 */
	public static void sort() {
		int[] numbers = { 1, 2, 32, 1412, 123 };
		// 原生数组仅有的一个操作
		// System.out.println(numbers.length);
		Arrays.sort(numbers);

		// for (int value : numbers) {
		// System.out.println(value);
		// }

		// 按降序的形式打印
		for (int i = numbers.length - 1; i >= 0; i--) {
			System.out.println(numbers[i]);
		}
	}

	/**
	 * 数组copy
	 */
	public static void copy() {
		int[] source = { 1, 2, 32, 1412, 123 };
		int[] target = new int[source.length + 1];
		System.arraycopy(source, 3, target, target.length - 2, 2);

		for (int value : target) {
			System.out.println(value);
		}
	}

	/**
	 * 模拟System.arraycopy()的内部实现
	 * 
	 * @param src
	 * @param srcPos
	 * @param dest
	 * @param destPos
	 * @param length
	 */
	public static void arrayCopy(int[] src, int srcPos, int[] dest,
			int destPos, int length) {
		for (int i = 0; i < length; i++) {
			dest[destPos + i] = src[srcPos + i]; 
		}
	}

	public static void testArrayCopy() {
		int[] source = { 1, 2, 32, 1412, 123 };
		int[] target = new int[source.length + 1];
		arrayCopy(source, 3, target, target.length - 2, 2);

		for (int value : target) {
			System.out.println(value);
		}
	}

	public static void main(String[] args) {
		// sort();
		// copy();
		testArrayCopy();
	}
}
